home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / kthread.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.1 KB  |  38 lines

  1. #ifndef _LINUX_KTHREAD_H
  2. #define _LINUX_KTHREAD_H
  3. /* Simple interface for creating and stopping kernel threads without mess. */
  4. #include <linux/err.h>
  5. #include <linux/sched.h>
  6.  
  7. struct task_struct *kthread_create(int (*threadfn)(void *data),
  8.                    void *data,
  9.                    const char namefmt[], ...)
  10.     __attribute__((format(printf, 3, 4)));
  11.  
  12. /**
  13.  * kthread_run - create and wake a thread.
  14.  * @threadfn: the function to run until signal_pending(current).
  15.  * @data: data ptr for @threadfn.
  16.  * @namefmt: printf-style name for the thread.
  17.  *
  18.  * Description: Convenient wrapper for kthread_create() followed by
  19.  * wake_up_process().  Returns the kthread or ERR_PTR(-ENOMEM).
  20.  */
  21. #define kthread_run(threadfn, data, namefmt, ...)               \
  22. ({                                       \
  23.     struct task_struct *__k                           \
  24.         = kthread_create(threadfn, data, namefmt, ## __VA_ARGS__); \
  25.     if (!IS_ERR(__k))                           \
  26.         wake_up_process(__k);                       \
  27.     __k;                                   \
  28. })
  29.  
  30. void kthread_bind(struct task_struct *k, unsigned int cpu);
  31. int kthread_stop(struct task_struct *k);
  32. int kthread_should_stop(void);
  33.  
  34. int kthreadd(void *unused);
  35. extern struct task_struct *kthreadd_task;
  36.  
  37. #endif /* _LINUX_KTHREAD_H */
  38.